#练习上课的search，findall,sub等案
#只能搜第一个
import re

def search():
    ret =re.search(r'\d','阅读次数为9999')   #9
    ret2 = re.search(r'\d+', '阅读次数为9999')  #9999
    print(f'{ret.group()},{ret2.group()}')


def find_second_match(pattern,string):
    matches =re.finditer(pattern,string)    #finditer返回一个包含匹配项和其位置信息的迭代器，该迭代器返回match对象
    # for match in matches:
    #     print(f'匹配的子串：{match.group()}，起始位置是：{match.start()}，终止位置是：{match.end()}')
    try:
        next(matches)
        second_ret =next(matches)
        return second_ret.group()
    except StopIteration:
        return None


#统计出python、c、c++相应文章的阅读次数
def find_all():    #findall方法返回包含所有匹配项的列表
    ret = re.findall(r'\d+','python = 9999, c = 7890 , c++= 123123')
    print(f'{ret}')


#将匹配到的阅读次数加1
class Sub():

    def sub(self):      #repl的内容会替换string内被匹配到的内容，返回一个新字符串，其中所有匹配项被替换，原字符串不被修改
        ret = re.sub(r'\d+','a','pyth = 36')
        print(f'{ret}')

    def add(self,temp):
        strnum =temp.group()
        num = int(strnum)+1
        return str(num)

    def first_two_sub(self):
        text ='abc abc abc abc'
        pattern =r'abc'
        replace ='mop'
        ret = re.sub(pattern,replace,text,count=2)
        print(f'{ret}')

    def time(self):
        s = 'hello world, now is 2020/7/20 18:48, 现在是2020年7月20日18时48分'
        ret_s =re.sub(r'年|月',r'/',s)
        ret_s =re.sub(r'日',r' ',ret_s)
        ret_s = re.sub(r'时', r':', ret_s)
        ret_s = re.sub(r'分', r' ', ret_s)
        print(ret_s)
        com = re.compile(r'\d{4}/[01]?[0-9]/[1-3]?[0-9]\s(?:0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]')
        ret = com.findall(ret_s)
        print(ret)
        com1 = re.compile(r'\d{4}/[01]?[0-9]/[1-3]?[0-9]\s(?:0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]')
        ret1 =com1.search(ret_s)
        print(ret1.group())

    def sub_exercise(self):
        long_text = """<div>
                <p>岗位职责：</p>
        <p>完成推荐算法、数据统计、接口、后台等服务器端相关工作</p>
        <p><br></p>
        <p>必备要求：</p>
        <p>良好的自我驱动力和职业素养，工作积极主动、结果导向</p>
        <p>&nbsp;<br></p>
        <p>技术要求：</p>
        <p>1、一年以上 Python 开发经验，掌握面向对象分析和设计，了解设计模式</p>
        <p>2、掌握HTTP协议，熟悉MVC、MVVM等概念以及相关WEB开发框架</p>
        <p>3、掌握关系数据库开发设计，掌握 SQL，熟练使用 MySQL/PostgreSQL 中的一种<br></p>
        <p>4、掌握NoSQL、MQ，熟练使用对应技术解决方案</p>
        <p>5、熟悉 Javascript/CSS/HTML5，JQuery、React、Vue.js</p>
        <p>&nbsp;<br></p>
        <p>加分项：</p>
        <p>大数据，数理统计，机器学习，sklearn，高性能，大并发。</p>

                </div>
            """
        ret =re.sub(r'<[^ >]*>|&nbsp;|\n|\s', '', long_text)
        print(ret)

def split():
    text ="info:xiaoZhang 33 shandong"
    ret = re.split(r':|\s',"info:xiaoZhang 33 shandong")
    print(ret)



if __name__ == '__main__':
    # pattern =r'\d+'
    # string ='abc123bcd456ghi789'
    # print(find_second_match(pattern, string))
    # find_all()
    # Sub().sub()
    # add1 = Sub().add
    # ret =re.sub(r'\d+',add1,'pyth = 36')
    # print(f'{ret}')
    # Sub().first_two_sub()
    # Sub().time()
    # Sub().sub_exercise()
    split()